package com.battle.service.controller.web;

import com.battle.pojo.param.loginMethod.*;
import com.battle.pojo.vo.loginMethod.*;
import com.battle.service.service.in.*;
import nirvana.core.domains.vo.PageResult;
import nirvana.core.domains.vo.ApiResult;
import org.springframework.web.bind.annotation.*;

import jakarta.validation.Valid;

import java.util.List;

/**
 * web/登录方式
 * 【描 述】：
 * 【环 境】：J2SE
 * 【详 细】：
 */
@RestController
@RequestMapping("/loginMethod/web")
public class LoginMethodWebController {

    private final LoginMethodService service;

    public LoginMethodWebController(LoginMethodService service) {
        this.service = service;
    }


    /**
     * 创建登录方式
     *
     * @param param
     * @return
     */
    @PostMapping("/createLoginMethod")
    public ApiResult createLoginMethod(@RequestBody @Valid CreateLoginMethodParam param) {
        service.createLoginMethod(param);
        return ApiResult.ok();
    }


    /**
     * 修改登录方式
     *
     * @param param
     */
    @PutMapping("/editLoginMethod")
    public ApiResult editLoginMethod(@RequestBody @Valid EditLoginMethodParam param) {
        service.editLoginMethod(param);
        return ApiResult.ok();
    }

    /**
     * 移除登录方式
     *
     * @param id
     */
    @DeleteMapping("/removeLoginMethod")
    public ApiResult removeLoginMethod(@RequestParam("id") Long id) {
        service.removeLoginMethod(id);
        return ApiResult.ok();
    }

    /**
     * 启动/禁用登录方式
     *
     * @param id
     */
    @GetMapping("/enabledLoginMethod")
    public ApiResult enabledLoginMethod(@RequestParam("id") Long id) {
        service.enabledLoginMethod(id);
        return ApiResult.ok();
    }

    /**
     * 获取登录方式详情
     *
     * @param id
     * @return
     */
    @GetMapping("/getLoginMethod")
    public ApiResult<GetLoginMethodVo> getLoginMethod(@RequestParam("id") Long id) {
        GetLoginMethodVo vo = service.getLoginMethod(id);
        return ApiResult.ok(vo);
    }

    /**
     * 获取登录方式列表
     *
     * @param param
     * @return
     */
    @PostMapping("/getLoginMethodList")
    public ApiResult<PageResult<GetLoginMethodListVo>> getLoginMethodList(@RequestBody GetLoginMethodListParam param) {
        PageResult<GetLoginMethodListVo> result = service.getLoginMethodList(param);
        return ApiResult.ok(result);
    }


    /**
     * 获取登录方式下拉列表
     *
     * @return
     */
    @PostMapping("/getLoginMethodDownList")
    public ApiResult<List<GetLoginMethodDownListVo>> getLoginMethodDownList(@RequestBody(required = false) @Valid GetLoginMethodDownListParam param) {
        List<GetLoginMethodDownListVo> list = service.getLoginMethodDownList(param);
        return ApiResult.ok(list);
    }


}

